package com.example.secondhandspringboot.template;

import com.baomidou.mybatisplus.extension.toolkit.Db;
import com.example.secondhandspringboot.domain.entity.Category;
import com.example.secondhandspringboot.domain.entity.Quality;
import lombok.Data;
import org.springframework.stereotype.Component;

@Component
@Data
public class QwenVlTemplate {
    //返回格式
    private final String answerTemplate = """
            {
                title:'',
                categoryId:'',
                qualityId:'',
                price:'',
                description:''
            }
            """;
    private final String systemPrompt = "你是一个校园二手网站的图片分析专家,善于跟据图片中所包含的物品撰写信息用于在二手网站发布";

    private final String answerExample = """
                {
                    title:'Razer雷蛇经典款绿灯鼠标绝版收藏品',
                    categoryId:7,
                    qualityId:3,
                    price:99,
                    description:'这是一款经典的 Razer 雷蛇死亡adder mouse 游戏竞技有线USB光电鼠标，采用人体工程学设计，专业游戏级光学传感器提供精准追踪和响应能力。
                                 绿色呼吸效果侧键提供额外支持，独特的右击轮功能可以迅速切换到DPI设定值或宏命令，提高战术优势。
                                 此外这款老鼠还带有两个前进和后退按钮以及三组dpi设置选项( dpi switch buttons) 及（赛睿软件调节功能）一应俱全！是非常适合高端玩家使用的装备之一！
                                 仅限真正发烧友购买下单前请仔细阅读商品详情及参考之前买家秀并保持对该货物无过高的期望 港东不接受任何理由退货退款不收需送至其他平台挂拍 \s
                                 只有诚意才可交易！对啦，请别忘记拇指赞一个 <3'
                }
            """;

    private String rules = """
              title要求：在12个字以内，需要包含中文;
              description要求: 不要涉及价格，描述要详细，必须保持在150字以内;
              categoryId要求: categoryId必须为整型，不要返回字符串类型;
              qualityId要求: categoryId必须为整型，不要返回字符串类型;
              price要求: 商品定价非常重要，请你跟据商品成色及市场行情等相关因素进行严格定价;
              回答模板的五个字段值title，categoryId，description,qualityId,price要与这个一摸一样，不能改变。
            """;


    public String getHumanPrompt() {
        return "跟据图片中的物品，按要求撰写一篇关于物品的相关信息用于在二手网站发布,必须严格按照:" +
                answerTemplate + "这个json字符串格式回答。必须为json字符串格式。" +
                "以下是你回答的一些要求，你必须严格遵守:" + rules +
                "categoryId需要你结合一下分类列表:" +
                Db.lambdaQuery(Category.class).list() +
                "qualityId需要你结合一下成色列表:" +
                Db.lambdaQuery(Quality.class).list() +
                ",下面是一个你回答的格式模板:" + answerExample + "请严格按照模板中的格式回答";
    }
}
